<?php
/*	
	选择排序：
	在要排序的一组数中，选出最小的一个数与第一个位置的数交换。然后在剩下的数当中再找最小的与第二个位置的数交换，如此循环到倒数第二个数和最后一个数比较为止。
	举例说明： $arr = array(6, 3, 8, 2, 9, 1);
　　第一轮：
 　　 第一次比较， 第一个数 6 与（3,  8,  2,  9,  1)中 3 比较，6大，当前最小数为3，位置为 1
　　　第二次比较， 最小数字 3 与（3,  8,  2,  9,  1)中 8 比较，3小，当前最小数为3，位置为 1
　　　第三次比较， 最小数字 3 与（3,  8,  2,  9,  1)中 2 比较，3大，当前最小数为2，位置为 3
　　　第四次比较， 最小数字 2 与（3,  8,  2,  9,  1)中 9 比较，2小，当前最小数为2，位置为 3
　　　第五次比较， 最小数字 2 与（3,  8,  2,  9,  1)中 1 比较，2大，当前最小数为1，位置为 5
　　  第一轮比较完成后，确定最小数为1，小于第一个数6，交换位置上的数，交换后结果为 1  3  8  2  9  6
　　  总结：第一轮比较，可以确定第一个位置的最小值。

*/
	$arr=array(1,43,54,62,21,66,32,78,36,76,39);  
	function selectSort($arr) {
	//双重循环完成，外层控制轮数，内层控制比较次数
	 $len=count($arr);
	    for($i=0; $i<$len-1; $i++) {
	        //先假设最小的值的位置
	        $p = $i;
	        
	        for($j=$i+1; $j<$len; $j++) {
	            //$arr[$p] 是当前已知的最小值
	            if($arr[$p] > $arr[$j]) {
	            //比较，发现更小的,记录下最小值的位置；并且在下次比较时采用已知的最小值进行比较。
	                $p = $j;
	            }
	        }
	        //已经确定了当前的最小值的位置，保存到$p中。如果发现最小值的位置与当前假设的位置$i不同，则位置互换即可。
	        if($p != $i) {
	            $tmp = $arr[$p];
	            $arr[$p] = $arr[$i];
	            $arr[$i] = $tmp;
	        }
	    }
	    //返回最终结果
	    return $arr;
	}
	print_r(selectSort($arr));

